Importation des librairies
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
df = pd.read_csv('https://www.data.gouv.fr/fr/datasets/r/e3d83ab3-dc52-4c99-abaf-8a38050cc68c',sep=';')
df.head()
df.tail()
tx_indic_7J_DC = Taux de personnes décédées durant les 7 derniers jours (pour 100 000 hab.)
tx_indic_7J_hosp = Taux de nouvelles hospitalisation lors des 7 derniers jours (pour 100 000 hab.)
tx_indic_7J_SC = Taux de nouvelles hospitalisation en soins critiques lors des 7 derniers jours (pour 100 000 hab.)
tx_prev_hosp = Taux personnes hospitalisées (pour 100 000 hab.)
tx_prev_SC = Taux de personnes en soins critiques (pour 100 000 hab.)
cl_age90 = classe d'age
pouravec :
0 = Hospitalisations avec infection SARS-CoV-2 (quelque soit le motif de l'hospitalisation)
1 = Hospitalisations pour COVID-19
2 = Hospitalisations pour autre motif, avec infection SARS-CoV-2
df.shape
df.dtypes
print(f"Nombre duplicats : {len(df) - len(df.drop_duplicates())}")
df['jour'] = pd.to_datetime(df['jour'])
df['fra'].value_counts()/len(df)
df['fra'] = df['fra'].astype('str')
df.dtypes
starting DataViz
header=['pays','date','classeAge','HopitaliséPour','décès_en_7j','hospitalisations_en_7j','soinsCritiques_en_7j','Taux_hospitalisés','Taux_soinsCritiques']
df.columns=header
df.head()
corr=df.corr()
plt.figure(figsize=(16, 12))
ax=sns.heatmap(corr,
xticklabels=corr.columns,
yticklabels=corr.columns,
cmap=sns.diverging_palette(220, 10, as_cmap=True),
square=True,
linewidths=.1)
ax.set(title="corrélation entre les variables");
fig,ax = plt.subplots(figsize = (11,7))
ax.grid(ls="dotted", lw="0.5", color="w", zorder=1)
hfont = {'fontname':'Impact'}
fig.set_facecolor("#08143D")
ax.patch.set_facecolor("#08143D")
ax.tick_params(colors="w", length=15)
ax.spines['bottom'].set_color("w")
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_color("w")
plt.plot(df['date'], df['Taux_hospitalisés'], zorder=0, color="#2bb6e0", label = "taux d'hospitalisés")
plt.plot(df['date'], df['Taux_soinsCritiques'], zorder=0, color="#8BF600", label = "taux soins critiques")
plt.xlabel("date", color="w", fontsize=15 , **hfont)
plt.ylabel("Nombre pour 100 000 habitants", color="w", fontsize=15 , **hfont)
fig.text(0.12,0.97, s="Evolution des hospitalisations et des soins critiques\n", fontsize = 16, fontweight = "bold", color = "w", **hfont)
fig.text(0.12,0.9, "pour 100 000 habitants", fontsize = 12, fontweight="light", color = "w", **hfont)
plt.legend(loc='upper left')
plt.show()
fig,ax = plt.subplots(figsize = (25,7))
ax.grid(ls="dotted", lw="0.5", color="w", zorder=1)
hfont = {'fontname':'Impact'}
fig.set_facecolor("#08143D")
ax.patch.set_facecolor("#08143D")
ax.tick_params(colors="w", length=15)
ax.spines['bottom'].set_color("w")
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_color("w")
df.groupby('classeAge').mean()["Taux_soinsCritiques"].plot(kind='bar', zorder=0,width = 0.9, color="#2bb6e0", label = "taux d'hospitalisés")
plt.xlabel("classe d'âge", color="w", fontsize=15 , **hfont)
plt.ylabel("Nombre pour 100 000 habitants", color="w", fontsize=15 , **hfont)
fig.text(0.12,0.97, s="Répartitions des soins critiques par classe d'âges\n", fontsize = 16, fontweight = "bold", color = "w", **hfont)
fig.text(0.12,0.9, "pour 100 000 habitants", fontsize = 12, fontweight="light", color = "w", **hfont)
plt.show()
df2 = pd.read_csv('https://www.data.gouv.fr/fr/datasets/r/5c4e1452-3850-4b59-b11c-3dd51d7fb8b5',sep=',')
df2.head()
df2.dtypes
df2['date'] = pd.to_datetime(df2['date'])
df2['dep'].unique()
df2 = df2[df2['dep'] != '2A']
df2 = df2[df2['dep'] != '2B']
df2 = df2[df2['dep'] != 971]
df2 = df2[df2['dep'] != 972]
df2 = df2[df2['dep'] != 973]
df2 = df2[df2['dep'] != 974]
df2 = df2[df2['dep'] != 976]
df2['dep'].unique()
df2['dep']=df2['dep'].astype(int)
df2['dep'].unique()
df2.shape
import plotly.express as px
import requests
france = requests.get('https://france-geojson.gregoiredavid.fr/repo/departements.geojson').json()
departements = {}
for feature in france["features"]:
feature["Departement"] = feature["properties"]["code"]
departements[feature["properties"]["nom"]] = feature["Departement"]
departements = (sorted(departements.items(), key=lambda t: t[1]))
donneeGeoFrance = pd.DataFrame(departements)
donneeGeoFrance.columns = ['Nom departement','Code departement']
donneeGeoFrance
donneeGeoFrance.dtypes
donneeGeoFrance['Code departement'].unique()
donneeGeoFrance = donneeGeoFrance[donneeGeoFrance['Code departement'] != '2A']
donneeGeoFrance = donneeGeoFrance[donneeGeoFrance['Code departement'] != '2B']
donneeGeoFrance['Code departement']=donneeGeoFrance['Code departement'].astype(int)
donneeGeoFrance['Code departement'].unique()
donneeGeoFrance
df_region=df2.groupby(by=["dep"]).mean().reset_index().sort_values(by=["dep"],ascending=True)
df_region
donneeGeoFranceF=pd.merge(donneeGeoFrance, df_region, left_on='Code departement', right_on='dep')
donneeGeoFranceF
fig = px.choropleth(data_frame=donneeGeoFranceF,
geojson=france,
locations='Nom departement',
featureidkey='properties.nom',
color='rea',
color_continuous_scale="Reds",
hover_name="Nom departement",
hover_data=["rea"],
title="Nombre de réa en moyenne par département sur toute la période",
)
fig.update_geos(showcountries=False, showcoastlines=False, showland=False, fitbounds="locations")
fig
df_hospi=df2.groupby(by=["date"]).sum().reset_index().sort_values(by=["date"],ascending=True)
df_hospi
fig,ax = plt.subplots(figsize = (11,7))
ax.grid(ls="dotted", lw="0.5", color="w", zorder=1)
hfont = {'fontname':'Impact'}
fig.set_facecolor("#08143D")
ax.patch.set_facecolor("#08143D")
ax.tick_params(colors="w", length=15)
ax.spines['bottom'].set_color("w")
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_color("w")
plt.plot(df_hospi['date'], df_hospi['hosp'], zorder=0, color="#2bb6e0", label = "hospitalissation")
plt.plot(df_hospi['date'], df_hospi['rea'], zorder=0, color="#8BF600", label = "réanimations")
plt.fill_between(df_hospi['date'], df_hospi['hosp'], color='#2bb6e0')
plt.fill_between(df_hospi['date'], df_hospi['rea'], color='#8BF600')
plt.xlabel("date", color="w", fontsize=15 , **hfont)
plt.ylabel("Nombre de personnes", color="w", fontsize=15 , **hfont)
fig.text(0.12,0.97, s="Evolution des hospitalisations et des soins critiques\n", fontsize = 16, fontweight = "bold", color = "w", **hfont)
plt.legend(loc='upper left')
plt.show()
fig,ax = plt.subplots(figsize = (11,7))
ax.grid(ls="dotted", lw="0.5", color="w", zorder=1)
hfont = {'fontname':'Impact'}
fig.set_facecolor("#08143D")
ax.patch.set_facecolor("#08143D")
ax.tick_params(colors="w", length=15)
ax.spines['bottom'].set_color("w")
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_color("w")
plt.plot(df_hospi['date'], df_hospi['incid_hosp'], zorder=0, color="#2bb6e0", label = "hospitalisation")
plt.plot(df_hospi['date'], df_hospi['incid_rad'], zorder=0, color="#8BF600", label = "réanimations")
plt.fill_between(df_hospi['date'], df_hospi['incid_hosp'], color='#2bb6e0')
plt.fill_between(df_hospi['date'], df_hospi['incid_rad'], color='#8BF600')
plt.xlabel("date", color="w", fontsize=15 , **hfont)
plt.ylabel("Nombre de personnes", color="w", fontsize=15 , **hfont)
fig.text(0.12,0.97, s="Evolution des hospitalisations et des retours à domiciles\n", fontsize = 16, fontweight = "bold", color = "w", **hfont)
plt.legend(loc='upper left')
plt.show()
df2.tail()
df_today = df2[df2['date'] == '2022-02-19']
df_today
df_region_today=df_region.sort_values(by=["dep"],ascending=True)
df_region_today
donneeGeoFranceF_today=pd.merge(donneeGeoFrance, df_region_today, left_on='Code departement', right_on='dep')
donneeGeoFranceF_today
donneeGeoFranceF_today.sum()
note : ne prend pas en compte la Corse et les DOM TOM
fig = px.choropleth(data_frame=donneeGeoFranceF_today,
geojson=france,
locations='Nom departement',
featureidkey='properties.nom',
color='rea',
color_continuous_scale="Reds",
hover_name="Nom departement",
hover_data=["rea"],
title="Nombre de réa par département au 19 février 2022",
)
fig.update_geos(showcountries=False, showcoastlines=False, showland=False, fitbounds="locations")
fig
fig = px.choropleth(data_frame=donneeGeoFranceF_today,
geojson=france,
locations='Nom departement',
featureidkey='properties.nom',
color='TO',
color_continuous_scale="Reds",
hover_name="Nom departement",
hover_data=["TO"],
title="Taux d'occupation au 19 février 2022",
)
fig.update_geos(showcountries=False, showcoastlines=False, showland=False, fitbounds="locations")
fig